/**
 * @author 赵希奥
 * @date 2022/4/1 1:24
 * @gitHub https://github.com/CKXGZXA
 * @gitee https://gitee.com/ckxgzxa
 * @description: 代理学生类, 充当代理主题角色
 */
public class ProxyStudent implements Student{
    /**
     * 维持一个对真实学生的引用
     */
    private RealStudent realStudent = new RealStudent();

    private AuthorityValidator authorityValidator;
    private Logger logger;


    @Override
    public void login(String userId) {
        // 判断权限
        this.validate(userId);
        realStudent.login(userId);
        this.log(userId);
    }


    /**
     * 创建权限判断对象并调用其validate()方法实现权限判断
     * @param userId 学生ID
     */
    public void validate(String userId) {
        authorityValidator = new AuthorityValidator();
        authorityValidator.validate(userId);
    }

    /**
     * 创建日志记录对象并调用其log()方法实现日志记录
     * @param userId 学生ID
     */
    public void log(String userId) {
        logger = new Logger();
        logger.log(userId);
    }
}
